package com.lancoo.ccas53.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.lancoo.ccas53.pojo.dto.TeachingClassWeekListDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * 教学班
 * </p>
 *
 * @author quin.song
 * @since 2024-05-20
 */
@Data
@Accessors(chain = true)
@TableName("teaching_class")
@ApiModel(value = "TeachingClass对象", description = "教学班")
public class TeachingClass implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "teaching_class_id", type = IdType.AUTO)
    private Long teachingClassId;
    private Integer taskId;
    @ApiModelProperty("教学班名称")
    private String teachingClassName;
    @ApiModelProperty("课程id")
    private Long courseId;
    @ApiModelProperty("课程名称")
    private String courseName;
    @ApiModelProperty("教学班对应的行政班")
    private String toClassName;
    @ApiModelProperty("基础平台专业id")
    private String baseMajorId;
    @ApiModelProperty("专业名称")
    private String majorName;
    @ApiModelProperty("学院")
    private String baseCollegeId;
    @ApiModelProperty("学院名称")
    private String collegeName;
    @ApiModelProperty("教学班容量-学生人数")
    private Integer classNum;
    @ApiModelProperty("允许选课超过容量   结果除以100")
    private Integer superPercent;
    @ApiModelProperty("对应年级(基础平台使用)")
    private String gradeId;
    @ApiModelProperty("年级名称")
    private String gradeName;
    @ApiModelProperty("行政班字符串")
    private String toClass;
    @ApiModelProperty("0无需选课 1在线选课;2:分级教学 3:预选教学班")
    private Integer teachingClassType;
    @ApiModelProperty("分级教学对应分类标签 A B C")
    private String sortType;
    @ApiModelProperty("1课程  2环节")
    private Integer flag;
    @ApiModelProperty("课程性质 1必修  2选修")
    private Integer studyNature;
    @ApiModelProperty("专业性质，1:公共课，2:专业课")
    private Integer majorProp;
    @ApiModelProperty("所属校区")
    private Integer campusId;
    @ApiModelProperty("校区名称")
    private String campusName;
    @ApiModelProperty("学生所属校区")
    private String studentCampus;
    @ApiModelProperty("分班标识 uuid")
    private String uniqueShiftSign;
    @ApiModelProperty("1单数 2双数")
    private Integer isSingle;
    @ApiModelProperty("是否可用 0为可用-正常开班 1为不可用-已取消 2未设置")
    private Integer isEnable;
    @ApiModelProperty("考核方式id")
    private Long assessmentId;
    @ApiModelProperty("考核方式名称")
    private String assessmentName;
    @ApiModelProperty("考核方式名称  0非自选  1自选")
    private Integer isOptional;
    private Integer isLocked;
    private Integer arrangeRound;
    private String splitClassUuid;
    @ApiModelProperty("拆班分教师上课-uuid")
    @TableField(value = "split_teacher_uuid")
    private String splitTeacherUuid;
    @ApiModelProperty("教学班容量-学生人数")
    @TableField(exist = false)
    private Integer classNumTemp;
    @ApiModelProperty("课程类别")
    @TableField(exist = false)
    private String courseType;
    @ApiModelProperty("课程性质 1必修 2选修")
    @TableField(exist = false)
    private Integer courseNature;
    @ApiModelProperty(value = "周学时")
    @TableField(exist = false)
    private Integer weekNum;
    @ApiModelProperty(value = "排课状态")
    @TableField(exist = false)
    private Integer scheduleState;
    @TableField(exist = false)
    private Boolean state = true;
    @ApiModelProperty(value = "开班条件")
    @TableField(exist = false)
    private Integer limitClassNum;
    @ApiModelProperty("班级学生组成")
    @TableField(exist = false)
    private String stuNames;
    @TableField(exist = false)
    @ApiModelProperty(value = "学生id")
    private List<Long> studentIds = new ArrayList<>();
    @TableField(exist = false)
    @ApiModelProperty(value = "老师")
    private List<TeachingClassTeacher> teachingClassTeachers = new ArrayList<>();
    @TableField(exist = false)
    @ApiModelProperty(value = "教学班参数")
    private List<TeachingClassWeek> teachingClassWeeks = new ArrayList<>();
    @TableField(exist = false)
    @ApiModelProperty(value = "教学班参数（生成教学班模块）")
    private List<TeachingClassWeekListDto> teachingClassWeekList = new ArrayList<>();
    @TableField(exist = false)
    @ApiModelProperty(value = "课程id+教师id")
    private String courseTeacherIds;
    @TableField(exist = false)
    @ApiModelProperty(value = "课程总学时")
    private Integer totalHour;
}
